00001 /*! \file 00002 * X-Forge Util <br> 00003 * Copyright 2000-2003 Fathammer Ltd 00004 * 00005 * \brief XFuStringKey.cpp is the implementation file for the 00006 * XFuStringKey class. For more information, see XFuStringKey.h. 00007 * 00008 * $Id: XFuStringKey.cpp,v 1.6.10.1 2003/08/21 10:49:04 jari Exp $ 00009 * $Date: 2003/08/21 10:49:04 $ 00010 * $Revision: 1.6.10.1 $ 00011 */ 00012 00013 #include <xfcore/XFcCore.h> 00014 #include <xfutil/XFuStringKey.h> 00015 00016 00017 XFuStringKey::XFuStringKey() 00018 { 00019 mKey = NULL; 00020 mHashCode = 0; 00021 mUsingData = 0; 00022 } 00023 00024 00025 XFuStringKey::XFuStringKey(const CHAR *aKey) 00026 { 00027 init(aKey); 00028 } 00029 00030 00031 XFuStringKey::XFuStringKey(const XFuStringKey &aKey) 00032 { 00033 init(aKey.mKey); 00034 } 00035 00036 00037 XFuStringKey & XFuStringKey::operator=(const XFuStringKey &aKey) 00038 { 00039 init(aKey.mKey); 00040 return *this; 00041 } 00042 00043 00044 void XFuStringKey::init(const CHAR *aKey) 00045 { 00046 if (aKey) 00047 { 00048 INT32 keyLen = XFcStringToolkit::getLength(aKey); 00049 if (keyLen < XFUSTRINGKEY_DATASIZE - 1) 00050 mUsingData = 1; 00051 if (mUsingData) 00052 { 00053 mKey = mData; 00054 INT a; 00055 for (a = 0; a < keyLen; ++a) 00056 mData[a] = aKey[a]; 00057 mData[keyLen] = 0; 00058 } 00059 else 00060 { 00061 mKey = XFcStringToolkit::copy(aKey); 00062 } 00063 mHashCode = 0; 00064 INT32 pos; 00065 for (pos = 0; pos < keyLen; pos++) 00066 mHashCode = 7 * mHashCode + aKey[pos]; 00067 } 00068 else 00069 { 00070 mKey = NULL; 00071 } 00072 } 00073 00074 00075 XFuStringKey::~XFuStringKey() 00076 { 00077 if (!mUsingData) 00078 delete[] mKey; 00079 } 00080 00081 00082 UINT32 XFcHashtableHash<XFuStringKey>::operator() (const XFuStringKey key) const 00083 { 00084 return key.mHashCode; 00085 } 00086 00087 00088 INT XFcHashtableEQ<XFuStringKey>::operator() (const XFuStringKey key1, const XFuStringKey key2) const 00089 { 00090 return !XFcStringToolkit::compare(key1.mKey, key2.mKey); 00091 } 00092 00093
![]() | ||||
![]() |
Confidential Copyright © 2002-2003 Fathammer | with doxygen by Dimitri van Heesch |